package pkg is
    attribute foreign : string;

    procedure fsdbDumpfile(
                    file_name       : IN string);
    attribute foreign of fsdbDumpfile : procedure is "fliparseTraceInit ./novas_fli.dll";

    procedure fsdbDumpvarsToFile(
                    scope_file_name : IN string;
                    file_name       : IN string := "");
    attribute foreign of fsdbDumpvarsToFile : procedure is "fliparsePartialToFile ./novas_fli.dll";

    procedure fsdbDumpvars(
                    depth           : IN integer;
                    region_name     : IN string);
    attribute foreign of fsdbDumpvars : procedure is "fliparsePartial ./novas_fli.dll";

    procedure fsdbDumpSingle(
                    signal_name     : IN string);
    attribute foreign of fsdbDumpSingle : procedure is "fliparseSingle ./novas_fli.dll";

    procedure fsdbDumpVariable(
                    variable_name   : IN string);
    attribute foreign of fsdbDumpVariable : procedure is "fliparseVariable ./novas_fli.dll";

    procedure fsdbVersion;
    attribute foreign of fsdbVersion : procedure is "fliparseVersion ./novas_fli.dll";

    procedure fsdbSwitchDumpfile(
                    file_name       : IN string);
    attribute foreign of fsdbSwitchDumpfile : procedure is "fliparseSwitchDumpfile ./novas_fli.dll";

    procedure fsdbDumpon;
    attribute foreign of fsdbDumpon : procedure is "fliparseDumpon ./novas_fli.dll";

    procedure fsdbDumpoff;
    attribute foreign of fsdbDumpoff : procedure is "fliparseDumpoff ./novas_fli.dll";

    procedure fsdbDumpflush;
    attribute foreign of fsdbDumpflush : procedure is "fliparseDumpflush ./novas_fli.dll";

    procedure fsdbDumplimit(
                    file_size       : IN integer);
    attribute foreign of fsdbDumplimit : procedure is "fliparseDumplimit ./novas_fli.dll";

    procedure fsdbDumpMemNow(
                    signal_name     : IN string;
                    begin_cell      : IN integer := -1;
                    size            : IN integer := -1);
    attribute foreign of fsdbDumpMemNow : procedure is "fliparseMemNow ./novas_fli.dll";

    procedure fsdbAutoSwitchDumpfile(
                    file_size       : IN integer;
                    file_name       : IN string;
                    file_amount     : IN integer;
                    logfile_name    : IN string :="");
    attribute foreign of fsdbAutoSwitchDumpfile : procedure is "fliparseAutoSwitchDumpfile ./novas_fli.dll";

    procedure fsdbSuppress(
                    file_name       : IN string);
    attribute foreign of fsdbSuppress : procedure is "fliparseSuppress ./novas_fli.dll";
    
    procedure fsdbDumpMem(
                    signal_name     : IN string;
                    begin_cell      : IN integer := -1;
                    size            : IN integer := -1;
                    cycle_time      : IN time    := 0 ns;
                    trigger         : IN string  := "";
                    delay_time      : IN time    := 0 ns);
    attribute foreign of fsdbDumpMem : procedure is "fliparseMemSync ./novas_fli.dll";

    procedure fsdbDumpMemInScope(
                    depth           : IN integer := 0;
                    region_name     : IN string;
                    cycle_time      : IN time    := 0 ns;
                    trigger         : IN string  := "";
                    delay_time      : IN time    := 0 ns);
    attribute foreign of fsdbDumpMemInScope : procedure is "fliparseMemInScope ./novas_fli.dll";

    procedure fsdbDumpMemInFile(
                    file_name       : IN string);
    attribute foreign of fsdbDumpMemInFile : procedure is "fliparseMemInFile ./novas_fli.dll";    
    
    procedure fsdbDumpFinish;
    attribute foreign of fsdbDumpFinish : procedure is "fliparseDumpFinish ./novas_fli.dll";    

    procedure fsdbDumpVariableInFile(
                    file_name       : IN string);
    attribute foreign of fsdbDumpVariableInFile : procedure is "fliparseVariableInFile ./novas_fli.dll";    
    
end;

package body pkg is 

    procedure fsdbDumpfile(
                    file_name       : IN string) is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;
    
    procedure fsdbDumpvarsToFile(
                    scope_file_name : IN string;
                    file_name       : IN string := "") is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;
    
    procedure fsdbDumpvars(
                    depth           : IN integer;
                    region_name     : IN string) is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;

    procedure fsdbDumpSingle(
                    signal_name     : IN string) is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;

    procedure fsdbDumpVariable(
                    variable_name   : IN string) is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;

    procedure fsdbVersion is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;

    procedure fsdbSwitchDumpfile(
                    file_name       : IN string) is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;
    
    procedure fsdbDumpon is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;

    procedure fsdbDumpoff is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;

    procedure fsdbDumpflush is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;

    procedure fsdbDumplimit(
                    file_size       : IN integer) is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;

    procedure fsdbDumpMemNow(
                    signal_name     : IN string;
                    begin_cell      : IN integer := -1;
                    size            : IN integer := -1) is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;

    procedure fsdbAutoSwitchDumpfile(
                    file_size       : IN integer;
                    file_name       : IN string;
                    file_amount     : IN integer;
                    logfile_name    : IN string :="") is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;

    procedure fsdbSuppress(
                    file_name       : IN string) is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;
    
    procedure fsdbDumpMem(
                    signal_name     : IN string;
                    begin_cell      : IN integer := -1;
                    size            : IN integer := -1;
                    cycle_time      : IN time    := 0 ns;
                    trigger         : IN string  := "";
                    delay_time      : IN time    := 0 ns) is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;

    procedure fsdbDumpMemInScope(
                    depth           : IN integer := 0;
                    region_name     : IN string;
                    cycle_time      : IN time    := 0 ns;
                    trigger         : IN string  := "";
                    delay_time      : IN time    := 0 ns) is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;
    
    procedure fsdbDumpMemInFile(
                    file_name       : IN string) is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;
    
    procedure fsdbDumpFinish is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;       

    procedure fsdbDumpVariableInFile(
                    file_name       : IN string) is
    begin
        assert false report "ERROR : foreign subprogram not called" severity note;
    end;
    
end; 


entity novas is end; 

architecture novas_arch of novas is
    attribute foreign : string;
    attribute foreign of novas_arch : architecture is "fliparseCommand novas_fli.dll";
begin
end;
